
#lang racket

;;;;; 求和
;;;;; 主要利用函数当参数
;;;;; sum = f(a) + ... + f(b)
(define (dai-sum f a b next )
  (if (> a b)
      0
      (+ (f a)
         (dai-sum f (next a) b next))))

;;;
;; 1+2+...+10
(define (identity x) x)
(define (next-num x) (+ 1 x))
(dai-sum identity 1 10 next-num)

;; 1^2 +  3^ + 5^2 + 7 ^
(define (sq x) (* x x))
(define (next-num2 x) (+ 2 x))
(dai-sum sq 1 7 next-num2)


